import javax.swing.*;
import javax.script.ScriptEngine;
import javax.xml.soap.Text;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyTest extends JFrame implements ActionListener {
    //定义两个面板
    private JPanel north, center;
    //文本框，用于显示计算结果
    private JTextField field;
    //定义按钮
    private JButton[] btns;
    //按钮文字数组
    private String[] str;
    //计算引擎
    private ScriptEngine engine;

    //构造函数
    public MyTest() {
        //设置窗口标题
        setTitle("计算器");
        //设置窗口大小，宽，高
        setSize(700, 700);
        //设置窗口位置
        setLocation((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-this.getWidth())/2,
                (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight()-this.getHeight())/2);
        //初始化窗口
        initComponent();
        //设置窗口可见
        setVisible(true);

    }

    //无参，无返回值
    private void initComponent() {
        //窗口中添加内容
        //创建面板
        north = new JPanel();
        center = new JPanel();
        //创建文本框
        field = new JTextField();
        //设置文本框属性
        field.setPreferredSize(new Dimension(700, 70));
        //输入框禁止编辑
        field.setEditable(false);

        //设置一个字体格式
        //Font font=new Font(new "SanSerif",Font.BOLD,25);

        //设置字体,加粗,大小
        field.setFont(new Font("SansSerif", Font.BOLD, 25));


        //以数组形式声明按钮
        str=new String[]

                {
                        "7", "8", "9", "+",
                        "4", "5", "6", "-",
                        "1", "2", "3", "*",
                        "0", ".", "=", "/",
                        "C", "B", "T", "S",
                };
        //创建按钮
        btns =new JButton[str.length];
        for(int i=0;i<btns.length;i++){
            btns[i]=new JButton(str[i]);
        }
        //给案件添加事件监听
        for(int i=0;i<btns.length;i++){
            btns[i].addActionListener(this);
        }
        //设置布局
        north.setLayout(new BorderLayout());
        //按钮面板的布局
        center.setLayout(new GridLayout(5,4));
        //将文本添加到上面的面板
        north.add(field);
        //将btn添加到center面板
        for(int i=0;i<btns.length;i++){
            center.add(btns[i]);
        }
        //将面板添加到窗口中
        this.add(north,BorderLayout.NORTH);
        this.add(center);
    }


    //将按键上的文字显示到输入框
    public  void showBtnText(String text){
        System.out.println(text);
        //判断text是不是数字，（正则表达式检测text是不是单个数字）
        Boolean isNum=text.matches("\\d");
        if(isNum){//如果是数字就拼接到字符串上
            String oldText=field.getText();
            field.setText(oldText+text);
//        }
//        else {//如果不是数字，就特殊处理
//            System.out.println(text);
//            //保留已输入的数字
//            String oldNum = field.getText();
//            System.out.println(oldNum);
//            //清空输入区
//            field.setText(text);
        }else{//如果不是数字，就特殊处理//如果是运算符怎么办
            if("C".equals(text)){  //清除输入框
                field.setText("");
            }else if("B".equals(text)){ //删除最后一位
                System.out.println("B");
                if(field.getText().length()>0) {
                    //先获取输入框的内容，然后截取掉最后一位，将截取后的内容重新设置到输入框
                    field.setText(field.getText().substring(0, field.getText().length() - 1));
                }
            }else if("T".equals(text)){ //显示时间
                System.out.println("T");
            }else if("S".equals(text)){ //清除时间
                System.out.println("S");
            }
        }
    }




    //重写方法
    @Override
    public void actionPerformed(ActionEvent e) {
        Object source=e.getSource();
        if(source instanceof JButton){
            JButton btn=(JButton) source;
            // System.out.println(btn);
            //获取按钮文字
            String text=btn.getText();
            //  System.out.println(text);
            // 展示文字到输入框
            this.showBtnText(text);
            //    field.setText(text);
        }
    }

    public static void main(String[] args){
        new MyTest();
        System.out.println("hello");

    }


}